package cn.core.cron.service.intf;

import cn.core.cron.eo.CronJob;
import cn.core.cron.qo.CronJobQO;
import cn.core.cron.vo.CronJobVO;
import cn.core.tool.util.Paging;
import cn.core.tool.util.Param;

import java.util.Collection;

/**
 * 定时任务 服务接口
 */
public interface ICronJobService {

  /**
   * 定时任务 >>> 保存
   */
  public CronJob save(CronJob eo) throws Exception;

  /**
   * 定时任务 >>> 批量保存
   */
  public Collection<CronJob> saveBatch(Collection<CronJob> eos) throws Exception;

  /**
   * 定时任务 >>> 修改
   */
  public CronJob update(CronJob eo) throws Exception;

  /**
   * 定时任务 >>> 批量修改
   */
  public Collection<CronJob> updateBatch(Collection<CronJob> eos) throws Exception;

  /**
   * 定时任务 >>> 删除
   */
  public void remove(CronJob eo) throws Exception;

  /**
   * 定时任务 >>> 批量删除
   */
  public void removeBatch(Collection<CronJob> eos) throws Exception;

  /**
   * 定时任务 >>> 数据量
   */
  public Long count(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 主键查询
   */
  public CronJob pk(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 查询
   */
  public Collection<CronJob> query(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 分页
   */
  public Paging<CronJob> paging(Param<CronJobQO> param) throws Exception;

  /**
   * 定时任务 >>> 业务数据量
   */
  public Long countVo(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 业务主键查询
   */
  public CronJobVO pkVo(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 业务查询
   */
  public Collection<CronJobVO> queryVo(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 业务分页
   */
  public Paging<CronJobVO> pagingVo(Param<CronJobQO> param) throws Exception;

  /**
   * 定时任务 >>> 开始
   */
  public CronJob start(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 停止
   */
  public CronJob stop(CronJobQO qo) throws Exception;

  /**
   * 定时任务 >>> 立即执行一次
   */
  public CronJob executeOnceImmediately(CronJobQO qo) throws Exception;

}
